This is Kara’s first pass at analyzing the Spiritual Epidemiology data (with data from 2019-03-08). (Note: PDF printed portrait, 80% zoom, minimum margins.)
Porosity
Overall scores

| parameter |
b |
standard error |
t |
p |
significant |
| (Intercept) |
6.83 |
0.10 |
71.29 |
<0.001 |
* |
| epi_ctrynonUS_US |
0.55 |
0.05 |
12.06 |
<0.001 |
* |
| epi_ctryGHVT_THCH |
4.13 |
0.11 |
38.00 |
<0.001 |
* |
| epi_ctryGH_VT |
0.04 |
0.15 |
0.31 |
0.76 |
|
| epi_ctryTH_CH |
0.91 |
0.16 |
5.68 |
<0.001 |
* |
All spiritual experiences (Questions #2-23)
Considering all “beings”

| parameter |
b |
standard error |
t |
p |
significant |
| (Intercept) |
0.28 |
0.01 |
50.72 |
<0.001 |
* |
| epi_ctrynonUS_US |
0.01 |
0.00 |
3.72 |
<0.001 |
* |
| epi_ctryGHVT_THCH |
0.10 |
0.01 |
15.72 |
<0.001 |
* |
| epi_ctryGH_VT |
-0.04 |
0.01 |
-4.57 |
<0.001 |
* |
| epi_ctryTH_CH |
0.07 |
0.01 |
7.77 |
<0.001 |
* |
Considering first five “beings” only

| parameter |
b |
standard error |
t |
p |
significant |
| (Intercept) |
0.29 |
0.00 |
95.21 |
<0.001 |
* |
| epi_ctrynonUS_US |
0.01 |
0.00 |
8.28 |
<0.001 |
* |
| epi_ctryGHVT_THCH |
0.09 |
0.00 |
25.56 |
<0.001 |
* |
| epi_ctryGH_VT |
-0.04 |
0.00 |
-8.57 |
<0.001 |
* |
| epi_ctryTH_CH |
0.09 |
0.01 |
18.04 |
<0.001 |
* |
Spiritual experiences: Universal questions, set 1 (Questions #2-10)
Overall scores

By item

Spiritual experiences: Beings questions (Questions #11-15 + more for Thailand)
Overall scores
Considering all “beings” (more for Thailand)
Removed 1 rows containing missing values (geom_point).

Considering first five “beings” only

By item

Spiritual experiences: Universal questions, set 2 (Questions #16-21)
Overall scores

Spiritual experiences: Universal questions, set 3 (Questions #22-23)
Overall scores

Relationships between porosity and spiritual experience
Considering all “beings” (more for Thailand)

| parameter |
b |
standard error |
t |
p |
significant |
| (Intercept) |
0.00 |
0.03 |
0.00 |
1 |
|
| spex_score_propall_std |
0.51 |
0.03 |
18.89 |
<0.001 |
* |
| epi_ctrynonUS_US |
0.00 |
0.01 |
0.00 |
1 |
|
| epi_ctryGHVT_THCH |
0.00 |
0.03 |
0.00 |
1 |
|
| epi_ctryGH_VT |
0.00 |
0.04 |
0.00 |
1 |
|
| epi_ctryTH_CH |
0.00 |
0.05 |
0.00 |
1 |
|
| spex_score_propall_std:epi_ctrynonUS_US |
-0.03 |
0.01 |
-2.21 |
0.028 |
* |
| spex_score_propall_std:epi_ctryGHVT_THCH |
-0.09 |
0.03 |
-2.99 |
0.003 |
* |
| spex_score_propall_std:epi_ctryGH_VT |
-0.10 |
0.04 |
-2.34 |
0.02 |
* |
| spex_score_propall_std:epi_ctryTH_CH |
-0.12 |
0.05 |
-2.56 |
0.011 |
* |
| parameter |
b |
standard error |
t |
p |
significant |
| US |
| (Intercept) |
0.00 |
0.05 |
0.00 |
1 |
|
| spex_score_propall_std |
0.63 |
0.05 |
12.03 |
<0.001 |
* |
| Ghana |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_propall_std |
0.29 |
0.06 |
4.75 |
<0.001 |
* |
| Thailand |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_propall_std |
0.46 |
0.06 |
7.35 |
<0.001 |
* |
| China |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_propall_std |
0.69 |
0.06 |
12.03 |
<0.001 |
* |
| Vanuatu |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_propall_std |
0.49 |
0.06 |
7.79 |
<0.001 |
* |
Considering first five “beings” only

| parameter |
b |
standard error |
t |
p |
significant |
| (Intercept) |
0.00 |
0.03 |
0.00 |
1 |
|
| spex_score_first5_std |
0.51 |
0.03 |
18.79 |
<0.001 |
* |
| epi_ctrynonUS_US |
0.00 |
0.01 |
0.00 |
1 |
|
| epi_ctryGHVT_THCH |
0.00 |
0.03 |
0.00 |
1 |
|
| epi_ctryGH_VT |
0.00 |
0.04 |
0.00 |
1 |
|
| epi_ctryTH_CH |
0.00 |
0.05 |
0.00 |
1 |
|
| spex_score_first5_std:epi_ctrynonUS_US |
-0.03 |
0.01 |
-2.16 |
0.031 |
* |
| spex_score_first5_std:epi_ctryGHVT_THCH |
-0.09 |
0.03 |
-2.77 |
0.006 |
* |
| spex_score_first5_std:epi_ctryGH_VT |
-0.09 |
0.04 |
-2.28 |
0.023 |
* |
| spex_score_first5_std:epi_ctryTH_CH |
-0.12 |
0.05 |
-2.73 |
0.006 |
* |
| parameter |
b |
standard error |
t |
p |
significant |
| US |
| (Intercept) |
0.00 |
0.05 |
0.00 |
1 |
|
| spex_score_first5_std |
0.62 |
0.05 |
11.91 |
<0.001 |
* |
| Ghana |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_first5_std |
0.30 |
0.06 |
4.88 |
<0.001 |
* |
| Thailand |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_first5_std |
0.44 |
0.06 |
7.02 |
<0.001 |
* |
| China |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_first5_std |
0.69 |
0.06 |
12.02 |
<0.001 |
* |
| Vanuatu |
| (Intercept) |
0.00 |
0.06 |
0.00 |
1 |
|
| spex_score_first5_std |
0.49 |
0.06 |
7.85 |
<0.001 |
* |
LS0tCnRpdGxlOiAiU3Bpcml0dWFsIGVwaWRlbWlvbG9neSBBTkFMWVNJUyAoS1cgZmlyc3QgcGFzcykiCnN1YnRpdGxlOiAiTGFzdCB1cGRhdGVkOiAyMDE5LTA0LTE4IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCmFsd2F5c19hbGxvd19odG1sOiB5ZXMKLS0tCgpUaGlzIGlzIEthcmEncyBmaXJzdCBwYXNzIGF0IGFuYWx5emluZyB0aGUgU3Bpcml0dWFsIEVwaWRlbWlvbG9neSBkYXRhICh3aXRoIGRhdGEgZnJvbSAyMDE5LTAzLTA4KS4gKE5vdGU6IFBERiBwcmludGVkIHBvcnRyYWl0LCA4MCUgem9vbSwgbWluaW11bSBtYXJnaW5zLikKCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3LAogICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IEYsIGVjaG8gPSBGKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsYW5nY29nKQpsaWJyYXJ5KHBzeWNoKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShjb3dwbG90KQpsaWJyYXJ5KGxtZTQpCmxpYnJhcnkobG1lclRlc3QpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShsdWJyaWRhdGUpCgp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgoKYGBge3J9CmRfcG9yIDwtIHJlYWQuY3N2KCIuL2RhdGFfd3JhbmdsZWQvZF9wb3IuY3N2Iiwgcm93Lm5hbWVzID0gIlgiKSAlPiUKICBtdXRhdGUoZXBpX2N0cnkgPSBmYWN0b3IoZXBpX2N0cnksIGxldmVscyA9IGMoIlVTIiwgIkdoYW5hIiwgIlRoYWlsYW5kIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGluYSIsICJWYW51YXR1IikpKQoKZF9wb3Jfc2NvcmVkIDwtIHJlYWQuY3N2KCIuL2RhdGFfd3JhbmdsZWQvZF9wb3Jfc2NvcmVkLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTJ0bzIzIDwtIHJlYWQuY3N2KCIuL2RhdGFfd3JhbmdsZWQvZF9zcGV4X2Jhc2VfcTJ0bzIzLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKCmRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbCA8LSByZWFkLmNzdigiLi9kYXRhX3dyYW5nbGVkL2Rfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbC5jc3YiLCByb3cubmFtZXMgPSAiWCIpICU+JQogIG11dGF0ZShlcGlfY3RyeSA9IGZhY3RvcihlcGlfY3RyeSwgbGV2ZWxzID0gYygiVVMiLCAiR2hhbmEiLCAiVGhhaWxhbmQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoaW5hIiwgIlZhbnVhdHUiKSkpCgpkX3NwZXhfYmFzZV9xMnRvMjNfc2NvcmVkX2ZpcnN0NSA8LSByZWFkLmNzdigiLi9kYXRhX3dyYW5nbGVkL2Rfc3BleF9iYXNlX3EydG8yM19zY29yZWRfZmlyc3Q1LmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTJ0bzEwIDwtIHJlYWQuY3N2KCIuL2RhdGFfd3JhbmdsZWQvZF9zcGV4X2Jhc2VfcTJ0bzEwLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKCmRfc3BleF9iYXNlX3EydG8xMF9zY29yZWQgPC0gcmVhZC5jc3YoIi4vZGF0YV93cmFuZ2xlZC9kX3NwZXhfYmFzZV9xMnRvMTBfc2NvcmVkLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTExdG8xNSA8LSByZWFkLmNzdigiZGF0YV93cmFuZ2xlZC9kX3NwZXhfYmFzZV9xMTF0bzE1LmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKCmRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkIDwtIHJlYWQuY3N2KCJkYXRhX3dyYW5nbGVkL2Rfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTE2dG8yMSA8LSByZWFkLmNzdigiZGF0YV93cmFuZ2xlZC9kX3NwZXhfYmFzZV9xMTZ0bzIxLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKCmRfc3BleF9iYXNlX3ExNnRvMjFfc2NvcmVkIDwtIHJlYWQuY3N2KCJkYXRhX3dyYW5nbGVkL2Rfc3BleF9iYXNlX3ExNnRvMjFfc2NvcmVkLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTIydG8yMyA8LSByZWFkLmNzdigiZGF0YV93cmFuZ2xlZC9kX3NwZXhfYmFzZV9xMjJ0bzIzLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKCmRfc3BleF9iYXNlX3EyMnRvMjNfc2NvcmVkIDwtIHJlYWQuY3N2KCJkYXRhX3dyYW5nbGVkL2Rfc3BleF9iYXNlX3EyMnRvMjNfc2NvcmVkLmNzdiIsIHJvdy5uYW1lcyA9ICJYIikgJT4lCiAgbXV0YXRlKGVwaV9jdHJ5ID0gZmFjdG9yKGVwaV9jdHJ5LCBsZXZlbHMgPSBjKCJVUyIsICJHaGFuYSIsICJUaGFpbGFuZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbmEiLCAiVmFudWF0dSIpKSkKYGBgCgpgYGB7cn0KIyBhbHRlcm5hdGl2ZSBjb250cmFzdHMgZm9yIHNpdGUKY29udHJhc3RzX2N0cnlfZWZmIDwtIGNiaW5kKCJVUyIgPSBjKDEsIDAsIDAsIDAsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHSCIgPSBjKDAsIDEsIDAsIDAsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKDAsIDAsIDEsIDAsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKDAsIDAsIDAsIDEsIC0xKSkKCmNvbnRyYXN0c19jdHJ5X2R1bSA8LSBjYmluZCgiR0hfVVMiID0gYygwLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSF9VUyIgPSBjKDAsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIX1VTIiA9IGMoMCwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlRfVVMiID0gYygwLCAwLCAwLCAwLCAxKSkKCmNvbnRyYXN0c19jdHJ5X2N0ciA8LSBjYmluZCgibm9uVVNfVVMiID0gYygtNCwgMSwgMSwgMSwgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0hWVF9USENIIiA9IGMoMCwgMSwgLTEsIC0xLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHSF9WVCIgPSBjKDAsIDEsIDAsIDAsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSF9DSCIgPSBjKDAsIDAsIDEsIC0xLCAwKSkKYGBgCgojIFBvcm9zaXR5CgojIyBPdmVyYWxsIHNjb3JlcwoKYGBge3J9CmRfcG9yX3Njb3JlZF9tYiA8LSBkX3Bvcl9zY29yZWQgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnkpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInNjb3JlIikgJT4lCiAgdW5ncm91cCgpICU+JQogIG11dGF0ZShlcGlfY3RyeSA9IGZhY3RvcihlcGlfY3RyeSwgbGV2ZWxzID0gYygiVVMiLCAiR2hhbmEiLCAiVGhhaWxhbmQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoaW5hIiwgIlZhbnVhdHUiKSkpCgojIGVmZmVjdC1jb2RlIGJ5IGRlZmF1bHQKY29udHJhc3RzKGRfcG9yX3Njb3JlZCRlcGlfY3RyeSkgPC0gY29udHIuc3VtKDUpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBUfQpwb3JfcGxvdF9hIDwtIGdncGxvdChkX3Bvcl9zY29yZWQsCiAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIHkgPSBzY29yZSwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKjE2LCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUqMTYsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDEqMTYsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faml0dGVyKGhlaWdodCA9IDAsIHdpZHRoID0gMC40LCBhbHBoYSA9IDAuMiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkX3Bvcl9zY29yZWRfbWIsCiAgICAgICAgICAgICAgICAgIGFlcyh5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGZhdHRlbiA9IDIpICsKICBnZW9tX3RleHQoZGF0YSA9IGRhdGEuZnJhbWUoeCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMoMCoxNiwgMC41KjE2LCAxKjE2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiID0gYygifiBBbGwgYW5zd2VycyAnbm8nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAifiBBbGwgYW5zd2VycyAnbWF5YmUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifiBBbGwgYW5zd2VycyAneWVzJyIpKSwKICAgICAgICAgICAgYWVzKHggPSB4LCB5ID0geSwgbGFiZWwgPSBsYWIpLAogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGhqdXN0ID0gMCwgbnVkZ2VfeSA9IDAuNSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMTYsIDQpKSArCiAgIyB5bGltKDAsIDE2KSArCiAgbGFicyh0aXRsZSA9ICJQb3Jvc2l0eSBieSBzaXRlIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiUG9yb3NpdHkgc2NvcmUgKGF2ZXJhZ2UgcmVzcG9uc2UsIHJhbmdlOiAwLTE2KSIpCgpwb3JfcGxvdF9iIDwtIGdncGxvdChkX3Bvcl9zY29yZWRfbWIsCiAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgIyBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKjE2LCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUqMTYsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogICMgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMSoxNiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBmYXR0ZW4gPSA0LCBzaG93LmxlZ2VuZCA9IEYpICsKICAjIGdlb21fdGV4dChkYXRhID0gZGF0YS5mcmFtZSh4ID0gMC41LAogICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSAwLjUgKiAxNiwgIyBjKDAqMTYsIDAuNSoxNiwgMSoxNiksCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiID0gIn4gQWxsIGFuc3dlcnMgJ21heWJlJyIpLAogICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYygifiBBbGwgYW5zd2VycyAnbm8nIiwKICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIn4gQWxsIGFuc3dlcnMgJ21heWJlJyIsCiAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJ+IEFsbCBhbnN3ZXJzICd5ZXMnIikpLAogICMgICAgICAgICAgIGFlcyh4ID0geCwgeSA9IHksIGxhYmVsID0gbGFiKSwgCiAgIyAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBoanVzdCA9IDAsIG51ZGdlX3kgPSAwLjUpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDE2LCA0KSkgKwogIGxhYnModGl0bGUgPSAiUG9yb3NpdHkgYnkgc2l0ZSAoem9vbWVkIGluKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIENJcyIsCiAgICAgICB4ID0gIlNpdGUiLCB5ID0gIlBvcm9zaXR5IHNjb3JlIChhdmVyYWdlIHJlc3BvbnNlLCByYW5nZTogMC0xNikiKQoKcGxvdF9ncmlkKHBvcl9wbG90X2EsIHBvcl9wbG90X2IsIG5jb2wgPSAyKQpgYGAKCmBgYHtyfQpyX3BvciA8LSBsbShzY29yZSB+IGVwaV9jdHJ5LCBkX3Bvcl9zY29yZWQsCiAgICAgICAgICAgIGNvbnRyYXN0cyA9IGxpc3QoZXBpX2N0cnkgPSBjb250cmFzdHNfY3RyeV9jdHIpKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0Kc3VtbWFyeShyX3BvcikkY29lZmZpY2llbnRzICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInBhcmFtZXRlciIpICU+JQogIHJlbmFtZShiID0gRXN0aW1hdGUsIGBzdGFuZGFyZCBlcnJvcmAgPSBTdGQuLkVycm9yLCBgdGAgPSB0LnZhbHVlLAogICAgICAgICBwID0gUHIuLi50Li4pICU+JQogIG11dGF0ZV9hdCh2YXJzKC1wYXJhbWV0ZXIsIC1wKSwgZnVucyhyb3VuZCguLCAyKSkpICU+JQogIG11dGF0ZShwID0gaWZlbHNlKHAgPCAwLjAwMSwgIjwwLjAwMSIsIHJvdW5kKHAsIDMpKSwKICAgICAgICAgc2lnbmlmaWNhbnQgPSBpZmVsc2UocCA8IDAuMDUsICIqIiwgIiIpKSAlPiUKICBrYWJsZShhbGlnbiA9IGMoImwiLCByZXAoInIiLCA1KSwgImwiKSkgJT4lCiAga2FibGVfc3R5bGluZygpICU+JQogIHJvd19zcGVjKGMoMjo1KSwgYm9sZCA9IFQpCmBgYAoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIyBCeSBpdGVtCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDEsIGluY2x1ZGUgPSBUfQpkX3BvciAlPiUKICBmaWx0ZXIoIWdyZXBsKCJhIiwgcXVlc3Rpb24pLCAhZ3JlcGwoImIiLCBxdWVzdGlvbiksIAogICAgICAgICAhZ3JlcGwoImMiLCBxdWVzdGlvbikpICU+JQogIGdyb3VwX2J5KGVwaV9jdHJ5LCBxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInJlc3BvbnNlIiwgbmEucm0gPSBUKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBmYWNldF93cmFwKH4gcmVvcmRlcihzdHJfd3JhcChxdWVzdGlvbl90ZXh0LCA1MCksIG9yZGVyKSwgbmNvbCA9IDQpICsKICBnZW9tX2ppdHRlcihkYXRhID0gZF9wb3IgJT4lIAogICAgICAgICAgICAgICAgZmlsdGVyKCFncmVwbCgiYSIsIHF1ZXN0aW9uKSwgIWdyZXBsKCJiIiwgcXVlc3Rpb24pLCAKICAgICAgICAgICAgICAgICAgICAgICAhZ3JlcGwoImMiLCBxdWVzdGlvbikpLCBhZXMoeSA9IHJlc3BvbnNlKSwgCiAgICAgICAgICAgICAgaGVpZ2h0ID0gMC4wNSwgYWxwaGEgPSAwLjA4LCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJQb3Jvc2l0eSBzY2FsZTogUmVzcG9uc2VzIHRvIGluZGl2aWR1YWwgaXRlbXMiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgCiAgICAgICB5ID0gIk1lYW4gcmVzcG9uc2UgKDAgPSBpdCBkb2VzIG5vdCBoYXBwZW4sIDAuNSA9IGl0IG1pZ2h0IGhhcHBlbiwgMSA9IGl0IGRlZmluaXRlbHkgaGFwcGVucyIpCmBgYAoKYGBge3J9CnBvcl9mdV9xdWVzdGlvbl90ZXh0IDwtIGRfcG9yICU+JQogIGZpbHRlcihxdWVzdGlvbiAlaW4lIGMoImVwaV8xXzAxIiwgImVwaV8xXzA0IiwgImVwaV8xXzA2IiwgImVwaV8xXzA3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJlcGlfMV8xMSIsICJlcGlfMV8xNCIpKSAlPiUKICBkaXN0aW5jdChxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gYXMuY2hhcmFjdGVyKHF1ZXN0aW9uX3RleHQpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC44LCBpbmNsdWRlID0gVH0KZF9wb3IgJT4lCiAgZmlsdGVyKGdyZXBsKCJhIiwgcXVlc3Rpb24pIHwgZ3JlcGwoImIiLCBxdWVzdGlvbikgfCBncmVwbCgiYyIsIHF1ZXN0aW9uKSkgJT4lCiAgZmlsdGVyKCFncmVwbCgidXNhIiwgcXVlc3Rpb24pLCAhZ3JlcGwoImdoYSIsIHF1ZXN0aW9uKSwgCiAgICAgICAgICFncmVwbCgiY2huIiwgcXVlc3Rpb24pLCAhZ3JlcGwoInZ1dCIsIHF1ZXN0aW9uKSwKICAgICAgICAgIWdyZXBsKCJ0aGwiLCBxdWVzdGlvbikpICU+JSAKICBncm91cF9ieShlcGlfY3RyeSwgcXVlc3Rpb24sIHF1ZXN0aW9uX3RleHQsIG9yZGVyKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKCJyZXNwb25zZSIsIG5hLnJtID0gVCkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBlcGlfY3RyeSwgeSA9IG1lYW4sIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgZmFjZXRfd3JhcCh+IHJlb3JkZXIoc3RyX3dyYXAocXVlc3Rpb25fdGV4dCwgMzApLCBvcmRlciksIG5jb2wgPSA2KSArCiAgZ2VvbV9qaXR0ZXIoZGF0YSA9IGRfcG9yICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihncmVwbCgiYSIsIHF1ZXN0aW9uKSB8IGdyZXBsKCJiIiwgcXVlc3Rpb24pIHwKICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXBsKCJjIiwgcXVlc3Rpb24pKSAlPiUKICAgICAgICAgICAgICAgIGZpbHRlcighZ3JlcGwoInVzYSIsIHF1ZXN0aW9uKSwgIWdyZXBsKCJnaGEiLCBxdWVzdGlvbiksIAogICAgICAgICAgICAgICAgICAgICAgICFncmVwbCgiY2huIiwgcXVlc3Rpb24pLCAhZ3JlcGwoInZ1dCIsIHF1ZXN0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAhZ3JlcGwoInRobCIsIHF1ZXN0aW9uKSksIGFlcyh5ID0gcmVzcG9uc2UpLCAKICAgICAgICAgICAgICBoZWlnaHQgPSAwLjA1LCBhbHBoYSA9IDAuMDgsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMiwgMC41KSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiUG9yb3NpdHkgc2NhbGU6IFJlc3BvbnNlcyB0byBmb2xsb3ctdXAgcXVlc3Rpb25zIiwKICAgICAgIHN1YnRpdGxlID0gcGFzdGUwKHBvcl9mdV9xdWVzdGlvbl90ZXh0JHF1ZXN0aW9uX3RleHQgJT4lIHBhc3RlMChjb2xsYXBzZSA9ICdcbicpLCAiXG5cbk5vdGU6IHRoZXNlIHF1ZXN0aW9ucyBhcmUgTk9UIGN1cnJlbnRseSBpbmNsdWRlZCBpbiBQb3Jvc2l0eSAnc2NvcmVzJ1xuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiKSwKICAgICAgIHggPSAiU2l0ZSIsIAogICAgICAgeSA9ICJNZWFuIHJlc3BvbnNlICgwID0gbm8sIDEgPSBhIGxpdHRsZSwgMiA9IGEgbG90KSIpCmBgYAoKYGBge3J9CnBvcl9zaXRlc3BlY19xdWVzdGlvbl90ZXh0IDwtIGRfcG9yICU+JQogIGZpbHRlcihncmVwbCgidXNhIiwgcXVlc3Rpb24pIHwgZ3JlcGwoImdoYSIsIHF1ZXN0aW9uKSB8CiAgICAgICAgIGdyZXBsKCJjaG4iLCBxdWVzdGlvbil8IGdyZXBsKCJ2dXQiLCBxdWVzdGlvbikgfAogICAgICAgICBncmVwbCgidGhsIiwgcXVlc3Rpb24pKSAlPiUKICBkaXN0aW5jdChxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIpICU+JQogIG11dGF0ZShxdWVzdGlvbl90ZXh0ID0gYXMuY2hhcmFjdGVyKHF1ZXN0aW9uX3RleHQpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMC40LCBpbmNsdWRlID0gVH0KZF9wb3IgJT4lCiAgZmlsdGVyKGdyZXBsKCJ1c2EiLCBxdWVzdGlvbikgfCBncmVwbCgiZ2hhIiwgcXVlc3Rpb24pIHwKICAgICAgICAgZ3JlcGwoImNobiIsIHF1ZXN0aW9uKXwgZ3JlcGwoInZ1dCIsIHF1ZXN0aW9uKSB8CiAgICAgICAgIGdyZXBsKCJ0aGwiLCBxdWVzdGlvbikpICU+JSAKICBncm91cF9ieShlcGlfY3RyeSwgcXVlc3Rpb24sIHF1ZXN0aW9uX3RleHQsIG9yZGVyKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKCJyZXNwb25zZSIsIG5hLnJtID0gVCkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBlcGlfY3RyeSwgeSA9IG1lYW4sIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgZmFjZXRfd3JhcCh+IHJlb3JkZXIoc3RyX3dyYXAocXVlc3Rpb25fdGV4dCwgNDApLCBvcmRlciksIAogICAgICAgICAgICAgbmNvbCA9IDQsIHNjYWxlcyA9ICJmcmVlX3giKSArCiAgZ2VvbV9qaXR0ZXIoZGF0YSA9IGRfcG9yICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihncmVwbCgidXNhIiwgcXVlc3Rpb24pIHwgZ3JlcGwoImdoYSIsIHF1ZXN0aW9uKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICBncmVwbCgiY2huIiwgcXVlc3Rpb24pfCBncmVwbCgidnV0IiwgcXVlc3Rpb24pIHwKICAgICAgICAgICAgICAgICAgICAgICAgIGdyZXBsKCJ0aGwiLCBxdWVzdGlvbikpLCBhZXMoeSA9IHJlc3BvbnNlKSwgCiAgICAgICAgICAgICAgaGVpZ2h0ID0gMC4wNSwgYWxwaGEgPSAwLjA4LCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJQb3Jvc2l0eSBzY2FsZTogUmVzcG9uc2VzIHRvIHNpdGUtc3BlY2lmaWMgcXVlc3Rpb25zIiwKICAgICAgIHN1YnRpdGxlID0gIk5vdGU6IHRoZXNlIHF1ZXN0aW9ucyBhcmUgTk9UIGN1cnJlbnRseSBpbmNsdWRlZCBpbiBQb3Jvc2l0eSAnc2NvcmVzJ1xuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgCiAgICAgICB5ID0gIk1lYW4gcmVzcG9uc2UgKDAgPSBubywgMC41ID0gbWF5YmUsIDEgPSB5ZXMpIikKYGBgCgo8UCBzdHlsZT0icGFnZS1icmVhay1iZWZvcmU6IGFsd2F5cyI+CiMgQWxsIHNwaXJpdHVhbCBleHBlcmllbmNlcyAoUXVlc3Rpb25zICMyLTIzKQoKIyMgQ29uc2lkZXJpbmcgYWxsICJiZWluZ3MiCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9wcm9wYWxsX21iIDwtIGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbCAlPiUKICBncm91cF9ieShlcGlfY3RyeSkgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgic2NvcmUiKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNiwgaW5jbHVkZSA9IFR9CnNwZXhfcTJ0bzIzX3Bsb3RfYSA8LSBnZ3Bsb3QoZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9wcm9wYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBlcGlfY3RyeSwgeSA9IHNjb3JlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAqMSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41KjEsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDEqMSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9qaXR0ZXIoaGVpZ2h0ID0gMCwgd2lkdGggPSAwLjQsIGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbF9tYiwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIGZhdHRlbiA9IDIsIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBkYXRhLmZyYW1lKHggPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjKDAqMSwgMC41KjEsIDEqMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYiA9IGMoIn4gQWxsIGFuc3dlcnMgJ25vJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAifiBBbGwgYW5zd2VycyAnbWF5YmUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifiBBbGwgYW5zd2VycyAneWVzJyIpKSwKICAgICAgICAgICAgYWVzKHggPSB4LCB5ID0geSwgbGFiZWwgPSBsYWIpLAogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGhqdXN0ID0gMCwgbnVkZ2VfeSA9IDAuMDUpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMSkpICsKICBsYWJzKHRpdGxlID0gIlNwaXJpdHVhbCBleHBlcmllbmNlcyAoUXVlc3Rpb25zICMyLTIzKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJJbmNsdWRlcyBhbGwgYmVpbmdzIGZvciBUaGFpbGFuZFxuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJQcm9wb3J0aW9uIHNjb3JlIChyYW5nZTogMC0xKSIpCgpzcGV4X3EydG8yM19wbG90X2IgPC0gZ2dwbG90KGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbF9tYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIHkgPSBtZWFuLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBmYXR0ZW4gPSA0LCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMSkpICsKICBsYWJzKHRpdGxlID0gIlNwaXJpdHVhbCBleHBlcmllbmNlcyAoem9vbWVkIGluKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJJbmNsdWRlcyBhbGwgYmVpbmdzIGZvciBUaGFpbGFuZFxuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJQcm9wb3J0aW9uIHNjb3JlIChyYW5nZTogMC0xKSIpCgpwbG90X2dyaWQoc3BleF9xMnRvMjNfcGxvdF9hLCBzcGV4X3EydG8yM19wbG90X2IsIG5jb2wgPSAyKQpgYGAKCmBgYHtyfQpyX3EydG8yM19zY29yZWRfcHJvcGFsbCA8LSBsbShzY29yZSB+IGVwaV9jdHJ5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9wcm9wYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cmFzdHMgPSBsaXN0KGVwaV9jdHJ5ID0gY29udHJhc3RzX2N0cnlfY3RyKSkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFR9CnN1bW1hcnkocl9xMnRvMjNfc2NvcmVkX3Byb3BhbGwpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtcGFyYW1ldGVyLCAtcCksIGZ1bnMocm91bmQoLiwgMikpKSAlPiUKICBtdXRhdGUocCA9IGlmZWxzZShwIDwgMC4wMDEsICI8MC4wMDEiLCByb3VuZChwLCAzKSksCiAgICAgICAgIHNpZ25pZmljYW50ID0gaWZlbHNlKHAgPCAwLjA1LCAiKiIsICIiKSkgJT4lCiAga2FibGUoYWxpZ24gPSBjKCJsIiwgcmVwKCJyIiwgNSksICJsIikpICU+JQogIGthYmxlX3N0eWxpbmcoKSAlPiUKICByb3dfc3BlYyhjKDI6NSksIGJvbGQgPSBUKQpgYGAKCmBgYHtyfQpyX3EydG8yM19wcm9wYWxsIDwtIGxtZXIocmVzcG9uc2UgfiBlcGlfY3RyeSArICgxIHwgZXBpX3N1YmopLAogICAgICAgICAgICAgICAgICAgICAgICAgZF9zcGV4X2Jhc2VfcTJ0bzIzLAogICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhc3RzID0gbGlzdChlcGlfY3RyeSA9IGNvbnRyYXN0c19jdHJ5X2N0cikpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBGfQpzdW1tYXJ5KHJfcTJ0bzIzX3Byb3BhbGwpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtcGFyYW1ldGVyLCAtcCksIGZ1bnMocm91bmQoLiwgMikpKSAlPiUKICBtdXRhdGUocCA9IGlmZWxzZShwIDwgMC4wMDEsICI8MC4wMDEiLCByb3VuZChwLCAzKSksCiAgICAgICAgIHNpZ25pZmljYW50ID0gaWZlbHNlKHAgPCAwLjA1LCAiKiIsICIiKSkgJT4lCiAga2FibGUoYWxpZ24gPSBjKCJsIiwgcmVwKCJyIiwgNSksICJsIikpICU+JQogIGthYmxlX3N0eWxpbmcoKSAlPiUKICByb3dfc3BlYyhjKDI6NSksIGJvbGQgPSBUKQpgYGAKCjxQIHN0eWxlPSJwYWdlLWJyZWFrLWJlZm9yZTogYWx3YXlzIj4KIyMgQ29uc2lkZXJpbmcgZmlyc3QgZml2ZSAiYmVpbmdzIiBvbmx5CgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9maXJzdDVfbWIgPC0gZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9maXJzdDUgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnkpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInNjb3JlIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBUfQpzcGV4X3EydG8yM19wbG90X2MgPC0gZ2dwbG90KGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfZmlyc3Q1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBlcGlfY3RyeSwgeSA9IHNjb3JlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAqMjIsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSoyMiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMSoyMiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9qaXR0ZXIoaGVpZ2h0ID0gMCwgd2lkdGggPSAwLjQsIGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfZmlyc3Q1X21iLAogICAgICAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gMiwgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3RleHQoZGF0YSA9IGRhdGEuZnJhbWUoeCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMoMCoyMiwgMC41KjIyLCAxKjIyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiID0gYygifiBBbGwgYW5zd2VycyAnbm8nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJ+IEFsbCBhbnN3ZXJzICdtYXliZSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+IEFsbCBhbnN3ZXJzICd5ZXMnIikpLAogICAgICAgICAgICBhZXMoeCA9IHgsIHkgPSB5LCBsYWJlbCA9IGxhYiksCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgaGp1c3QgPSAwLCBudWRnZV95ID0gMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDIpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKFF1ZXN0aW9ucyAjMi0yMykiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgZmlyc3QgZml2ZSBiZWluZ3MgZm9yIGFsbCBzaXRlc1xuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJTdW0gc2NvcmUgKHJhbmdlOiAwLTIyKSIpCgpzcGV4X3EydG8yM19wbG90X2QgPC0gZ2dwbG90KGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfZmlyc3Q1X21iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBlcGlfY3RyeSwgeSA9IG1lYW4sIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIGZhdHRlbiA9IDQsIHNob3cubGVnZW5kID0gRikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDIpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKHpvb21lZCBpbikiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgZmlyc3QgZml2ZSBiZWluZ3MgZm9yIGFsbCBzaXRlc1xuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJTdW0gc2NvcmUgKHJhbmdlOiAwLTIyKSIpCgpwbG90X2dyaWQoc3BleF9xMnRvMjNfcGxvdF9jLCBzcGV4X3EydG8yM19wbG90X2QsIG5jb2wgPSAyKQpgYGAKCmBgYHtyfQpyX3EydG8yM19zY29yZWRfZmlyc3Q1MiA8LSBsbShyZXNwb25zZSB+IGVwaV9jdHJ5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZF9zcGV4X2Jhc2VfcTJ0bzIzICU+JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcighcXVlc3Rpb24gJWluJSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJlcGlfMl90aGwxMmUiLCAiZXBpXzJfdGhsMTJmIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXBpXzJfdGhsMTJnIiwgImVwaV8yX3RobDEyaCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVwaV8yX3RobDEyaSIsICJlcGlfMl90aGwxMmoiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVwaV8yX3RobDEyayIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhc3RzID0gbGlzdChlcGlfY3RyeSA9IGNvbnRyYXN0c19jdHJ5X2N0cikpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBUfQpzdW1tYXJ5KHJfcTJ0bzIzX3Njb3JlZF9maXJzdDUyKSRjb2VmZmljaWVudHMgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgcmVuYW1lKGIgPSBFc3RpbWF0ZSwgYHN0YW5kYXJkIGVycm9yYCA9IFN0ZC4uRXJyb3IsIGB0YCA9IHQudmFsdWUsCiAgICAgICAgIHAgPSBQci4uLnQuLikgJT4lCiAgbXV0YXRlX2F0KHZhcnMoLXBhcmFtZXRlciwgLXApLCBmdW5zKHJvdW5kKC4sIDIpKSkgJT4lCiAgbXV0YXRlKHAgPSBpZmVsc2UocCA8IDAuMDAxLCAiPDAuMDAxIiwgcm91bmQocCwgMykpLAogICAgICAgICBzaWduaWZpY2FudCA9IGlmZWxzZShwIDwgMC4wNSwgIioiLCAiIikpICU+JQogIGthYmxlKGFsaWduID0gYygibCIsIHJlcCgiciIsIDUpLCAibCIpKSAlPiUKICBrYWJsZV9zdHlsaW5nKCkgJT4lCiAgcm93X3NwZWMoYygyOjUpLCBib2xkID0gVCkKYGBgCgpgYGB7cn0Kcl9xMnRvMjNfZmlyc3Q1IDwtIGxtZXIocmVzcG9uc2UgfiBlcGlfY3RyeSArICgxIHwgZXBpX3N1YmopLAogICAgICAgICAgICAgICAgICAgICAgICBkX3NwZXhfYmFzZV9xMnRvMjMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYXN0cyA9IGxpc3QoZXBpX2N0cnkgPSBjb250cmFzdHNfY3RyeV9jdHIpKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0Kc3VtbWFyeShyX3EydG8yM19maXJzdDUpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtcGFyYW1ldGVyLCAtcCksIGZ1bnMocm91bmQoLiwgMikpKSAlPiUKICBtdXRhdGUocCA9IGlmZWxzZShwIDwgMC4wMDEsICI8MC4wMDEiLCByb3VuZChwLCAzKSksCiAgICAgICAgIHNpZ25pZmljYW50ID0gaWZlbHNlKHAgPCAwLjA1LCAiKiIsICIiKSkgJT4lCiAga2FibGUoYWxpZ24gPSBjKCJsIiwgcmVwKCJyIiwgNSksICJsIikpICU+JQogIGthYmxlX3N0eWxpbmcoKSAlPiUKICByb3dfc3BlYyhjKDI6NSksIGJvbGQgPSBUKQpgYGAKCjxQIHN0eWxlPSJwYWdlLWJyZWFrLWJlZm9yZTogYWx3YXlzIj4KIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXM6IFVuaXZlcnNhbCBxdWVzdGlvbnMsIHNldCAxIChRdWVzdGlvbnMgIzItMTApCgojIyBPdmVyYWxsIHNjb3JlcwoKYGBge3J9CmRfc3BleF9iYXNlX3EydG8xMF9zY29yZWRfbWIgPC0gZF9zcGV4X2Jhc2VfcTJ0bzEwX3Njb3JlZCAlPiUKICBncm91cF9ieShlcGlfY3RyeSkgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgic2NvcmUiKSAlPiUKICB1bmdyb3VwKCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNiwgaW5jbHVkZSA9IFR9CnNwZXhfMnRvMTBfcGxvdF9hIDwtIGdncGxvdChkX3NwZXhfYmFzZV9xMnRvMTBfc2NvcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBlcGlfY3RyeSwgeSA9IHNjb3JlLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAqOSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41KjksIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDEqOSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9qaXR0ZXIoaGVpZ2h0ID0gMC4xLCB3aWR0aCA9IDAuNCwgYWxwaGEgPSAwLjIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnRyYW5nZShkYXRhID0gZF9zcGV4X2Jhc2VfcTJ0bzEwX3Njb3JlZF9tYiwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIGZhdHRlbiA9IDIsIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBkYXRhLmZyYW1lKHggPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjKDAqOSwgMC41KjksIDEqOSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYiA9IGMoIn4gQWxsIGFuc3dlcnMgJ25vJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAifiBBbGwgYW5zd2VycyAnbWF5YmUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifiBBbGwgYW5zd2VycyAneWVzJyIpKSwKICAgICAgICAgICAgYWVzKHggPSB4LCB5ID0geSwgbGFiZWwgPSBsYWIpLAogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGhqdXN0ID0gMCwgbnVkZ2VfeSA9IDAuNSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgOSwgMSkpICsKICBsYWJzKHRpdGxlID0gIlNwaXJpdHVhbCBleHBlcmllbmNlcyAoUXVlc3Rpb25zICMyLTEwKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIENJcyIsCiAgICAgICB4ID0gIlNpdGUiLCB5ID0gIlNjb3JlIChyYW5nZTogMC05KSIpCgpzcGV4XzJ0bzEwX3Bsb3RfYiA8LSBnZ3Bsb3QoZF9zcGV4X2Jhc2VfcTJ0bzEwX3Njb3JlZF9tYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIHkgPSBtZWFuLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBmYXR0ZW4gPSA0LCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDksIDEpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKHpvb21lZCBpbikiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJTY29yZSAocmFuZ2U6IDAtOSkiKQoKcGxvdF9ncmlkKHNwZXhfMnRvMTBfcGxvdF9hLCBzcGV4XzJ0bzEwX3Bsb3RfYiwgbmNvbCA9IDIpCmBgYAoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIyBCeSBpdGVtCgpgYGB7ciwgZmlnLndpZHRoID0gNiwgZmlnLmFzcCA9IDEsIGluY2x1ZGUgPSBUfQpkX3NwZXhfYmFzZV9xMnRvMTAgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnksIHF1ZXN0aW9uLCBxdWVzdGlvbl90ZXh0LCBvcmRlcikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgicmVzcG9uc2UiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZXBpX2N0cnksIHkgPSBtZWFuLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGZhY2V0X3dyYXAofiBzdHJfd3JhcChxdWVzdGlvbl90ZXh0LCA1MCksIG5jb2wgPSAzKSArCiAgZmFjZXRfd3JhcCh+IHJlb3JkZXIoc3RyX3dyYXAocXVlc3Rpb25fdGV4dCwgNjApLCBvcmRlciksIG5jb2wgPSAzKSArCiAgZ2VvbV9qaXR0ZXIoZGF0YSA9IGRfc3BleF9iYXNlX3EydG8xMCwgYWVzKHkgPSByZXNwb25zZSksIAogICAgICAgICAgICAgIGhlaWdodCA9IDAuMDUsIGFscGhhID0gMC4wOCwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiU3Bpcml0dWFsIGV4cGVyaWVuY2VzICMyLTEwOiBSZXNwb25zZXMgdG8gaW5kaXZpZHVhbCBpdGVtcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIENJcyIsCiAgICAgICB4ID0gIlNpdGUiLCAKICAgICAgIHkgPSAiTWVhbiByZXNwb25zZSwgaS5lLiwgcHJvcG9ydGlvbiByZXNwb25kaW5nICd5ZXMnICgwID0gbm8sIDEgPSB5ZXMpIikKYGBgCgoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIFNwaXJpdHVhbCBleHBlcmllbmNlczogQmVpbmdzIHF1ZXN0aW9ucyAoUXVlc3Rpb25zICMxMS0xNSArIG1vcmUgZm9yIFRoYWlsYW5kKQoKIyMgT3ZlcmFsbCBzY29yZXMKCiMjIyBDb25zaWRlcmluZyBhbGwgImJlaW5ncyIgKG1vcmUgZm9yIFRoYWlsYW5kKQoKYGBge3J9CmRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkX3Byb3BhbGxfbWIgPC0gZF9zcGV4X2Jhc2VfcTExdG8xNV9zY29yZWQgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnkpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInNjb3JlX3Byb3BhbGwiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42LCBpbmNsdWRlID0gVH0Kc3BleF8xMXRvMTVfcGxvdF9hIDwtIGdncGxvdChkX3NwZXhfYmFzZV9xMTF0bzE1X3Njb3JlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIHkgPSBzY29yZV9wcm9wYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAqMSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMC41KjEsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDEqMSwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9qaXR0ZXIoaGVpZ2h0ID0gMC4wMiwgd2lkdGggPSAwLjQsIGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkX3Byb3BhbGxfbWIsCiAgICAgICAgICAgICAgICAgIGFlcyh5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLAogICAgICAgICAgICAgICAgICBmYXR0ZW4gPSAyLCBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fdGV4dChkYXRhID0gZGF0YS5mcmFtZSh4ID0gMC41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gYygwKjEsIDAuNSoxLCAxKjEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWIgPSBjKCJ+IEFsbCBhbnN3ZXJzICdubyciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIn4gQWxsIGFuc3dlcnMgJ21heWJlJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn4gQWxsIGFuc3dlcnMgJ3llcyciKSksCiAgICAgICAgICAgIGFlcyh4ID0geCwgeSA9IHksIGxhYmVsID0gbGFiKSwKICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBoanVzdCA9IDAsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjIpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKFF1ZXN0aW9ucyAjMTEtMTUrKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJJbmNsdWRlcyBhbGwgYmVpbmdzIGZvciBUaGFpbGFuZFxuRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJQcm9wb3J0aW9uIHNjb3JlIChyYW5nZTogMC0xKSIpCgpzcGV4XzExdG8xNV9wbG90X2IgPC0gZ2dwbG90KGRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkX3Byb3BhbGxfbWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gNCwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjIpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKHpvb21lZCBpbikiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgYWxsIGJlaW5ncyBmb3IgVGhhaWxhbmRcbkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiUHJvcG9ydGlvbiBzY29yZSAocmFuZ2U6IDAtMSkiKQoKcGxvdF9ncmlkKHNwZXhfMTF0bzE1X3Bsb3RfYSwgc3BleF8xMXRvMTVfcGxvdF9iLCBuY29sID0gMikKYGBgCgo8UCBzdHlsZT0icGFnZS1icmVhay1iZWZvcmU6IGFsd2F5cyI+CiMjIyBDb25zaWRlcmluZyBmaXJzdCBmaXZlICJiZWluZ3MiIG9ubHkKCmBgYHtyfQpkX3NwZXhfYmFzZV9xMTF0bzE1X3Njb3JlZF9maXJzdDVfbWIgPC0gZF9zcGV4X2Jhc2VfcTExdG8xNV9zY29yZWQgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnkpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInNjb3JlX2ZpcnN0NSIsIG5hLnJtID0gVCkgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBUfQpzcGV4XzExdG8xNV9wbG90X2MgPC0gZ2dwbG90KGRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWVzKHggPSBlcGlfY3RyeSwgeSA9IHNjb3JlX2ZpcnN0NSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKjUsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSo1LCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAxKjUsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faml0dGVyKGhlaWdodCA9IDAuMSwgd2lkdGggPSAwLjQsIGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGRfc3BleF9iYXNlX3ExMXRvMTVfc2NvcmVkX2ZpcnN0NV9tYiwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIGZhdHRlbiA9IDIsIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBkYXRhLmZyYW1lKHggPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjKDAqNSwgMC41KjUsIDEqNSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYiA9IGMoIn4gQWxsIGFuc3dlcnMgJ25vJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAifiBBbGwgYW5zd2VycyAnbWF5YmUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifiBBbGwgYW5zd2VycyAneWVzJyIpKSwKICAgICAgICAgICAgYWVzKHggPSB4LCB5ID0geSwgbGFiZWwgPSBsYWIpLAogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGhqdXN0ID0gMCwgbnVkZ2VfeSA9IDAuMjUpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDUsIDEpKSArCiAgbGFicyh0aXRsZSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZXMgKFF1ZXN0aW9ucyAjMTEtMTUrKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJJbmNsdWRlcyBmaXJzdCBmaXZlIGJlaW5ncyBmb3IgYWxsIHNpdGVzXG5FcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIENJcyIsCiAgICAgICB4ID0gIlNpdGUiLCB5ID0gIlN1bSBzY29yZSAocmFuZ2U6IDAtNSkiKQoKc3BleF8xMXRvMTVfcGxvdF9kIDwtIGdncGxvdChkX3NwZXhfYmFzZV9xMTF0bzE1X3Njb3JlZF9maXJzdDVfbWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gNCwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA1LCAxKSkgKwogIGxhYnModGl0bGUgPSAiU3Bpcml0dWFsIGV4cGVyaWVuY2VzICh6b29tZWQgaW4pIiwKICAgICAgIHN1YnRpdGxlID0gIkluY2x1ZGVzIGZpcnN0IGZpdmUgYmVpbmdzIGZvciBhbGwgc2l0ZXNcbkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiU3VtIHNjb3JlIChyYW5nZTogMC01KSIpCgpwbG90X2dyaWQoc3BleF8xMXRvMTVfcGxvdF9jLCBzcGV4XzExdG8xNV9wbG90X2QsIG5jb2wgPSAyKQpgYGAKCjxQIHN0eWxlPSJwYWdlLWJyZWFrLWJlZm9yZTogYWx3YXlzIj4KIyMgQnkgaXRlbQoKYGBge3J9CnNwZXhfMTF0bzE1X3Bsb3RfdXMgPC0gZF9zcGV4X2Jhc2VfcTExdG8xNSAlPiUKICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlVTIiwgZ3JlcGwoInVzYSIsIHF1ZXN0aW9uKSkgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnksIHF1ZXN0aW9uLCBxdWVzdGlvbl90ZXh0LCBvcmRlcikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgicmVzcG9uc2UiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZXBpX2N0cnksIHkgPSBtZWFuKSkgKwogIGZhY2V0X3dyYXAofiByZW9yZGVyKHN0cl93cmFwKHF1ZXN0aW9uX3RleHQsIDQwKSwgb3JkZXIpLCBuY29sID0gNSkgKwogIGdlb21faml0dGVyKGRhdGEgPSBkX3NwZXhfYmFzZV9xMTF0bzE1ICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihlcGlfY3RyeSA9PSAiVVMiLCBncmVwbCgidXNhIiwgcXVlc3Rpb24pKSwgCiAgICAgICAgICAgICAgYWVzKHkgPSByZXNwb25zZSksIAogICAgICAgICAgICAgIGhlaWdodCA9IDAuMDUsIGFscGhhID0gMC4wOCwgY29sb3IgPSAiIzFiOWU3NyIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gIlVTIFNwaXJpdHVhbCBleHBlcmllbmNlcyAjMTEtMTU6IFJlc3BvbnNlcyB0byBpbmRpdmlkdWFsIGl0ZW1zIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIAogICAgICAgeSA9ICJNZWFuIHJlc3BvbnNlICgwID0gbm8sIDEgPSB5ZXMpIikKYGBgCgpgYGB7cn0Kc3BleF8xMXRvMTVfcGxvdF9naCA8LSBkX3NwZXhfYmFzZV9xMTF0bzE1ICU+JQogIGZpbHRlcihlcGlfY3RyeSA9PSAiR2hhbmEiLCBncmVwbCgiZ2hhIiwgcXVlc3Rpb24pKSAlPiUKICBncm91cF9ieShlcGlfY3RyeSwgcXVlc3Rpb24sIHF1ZXN0aW9uX3RleHQsIG9yZGVyKSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKCJyZXNwb25zZSIsIG5hLnJtID0gVCkgJT4lCiAgdW5ncm91cCgpICU+JSAKICBnZ3Bsb3QoYWVzKHggPSBlcGlfY3RyeSwgeSA9IG1lYW4pKSArCiAgZmFjZXRfd3JhcCh+IHJlb3JkZXIoc3RyX3dyYXAocXVlc3Rpb25fdGV4dCwgNDApLCBvcmRlciksIG5jb2wgPSA1KSArCiAgZ2VvbV9qaXR0ZXIoZGF0YSA9IGRfc3BleF9iYXNlX3ExMXRvMTUgJT4lIAogICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJHaGFuYSIsIGdyZXBsKCJnaGEiLCBxdWVzdGlvbikpLCAKICAgICAgICAgICAgICBhZXMoeSA9IHJlc3BvbnNlKSwgCiAgICAgICAgICAgICAgaGVpZ2h0ID0gMC4wNSwgYWxwaGEgPSAwLjA4LCBjb2xvciA9ICIjZDk1ZjAyIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9wb2ludHJhbmdlKGFlcyh5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC41KSwgCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSAiR0hBTkEgU3Bpcml0dWFsIGV4cGVyaWVuY2VzICMxMS0xNTogUmVzcG9uc2VzIHRvIGluZGl2aWR1YWwgaXRlbXMiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgCiAgICAgICB5ID0gIk1lYW4gcmVzcG9uc2UgKDAgPSBubywgMSA9IHllcykiKQpgYGAKCmBgYHtyfQpzcGV4XzExdG8xNV9wbG90X3RoIDwtIGRfc3BleF9iYXNlX3ExMXRvMTUgJT4lCiAgZmlsdGVyKGVwaV9jdHJ5ID09ICJUaGFpbGFuZCIsIGdyZXBsKCJ0aGwiLCBxdWVzdGlvbikpICU+JQogIGdyb3VwX2J5KGVwaV9jdHJ5LCBxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInJlc3BvbnNlIiwgbmEucm0gPSBUKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbikpICsKICBmYWNldF93cmFwKH4gcmVvcmRlcihzdHJfd3JhcChxdWVzdGlvbl90ZXh0LCA0MCksIG9yZGVyKSwgbmNvbCA9IDUpICsKICBnZW9tX2ppdHRlcihkYXRhID0gZF9zcGV4X2Jhc2VfcTExdG8xNSAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlRoYWlsYW5kIiwgZ3JlcGwoInRobCIsIHF1ZXN0aW9uKSksIAogICAgICAgICAgICAgIGFlcyh5ID0gcmVzcG9uc2UpLCAKICAgICAgICAgICAgICBoZWlnaHQgPSAwLjA1LCBhbHBoYSA9IDAuMDgsIGNvbG9yID0gIiM3NTcwYjMiLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjUpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9ICJUSEFJTEFORCBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgIzExLTE1OiBSZXNwb25zZXMgdG8gaW5kaXZpZHVhbCBpdGVtcyIsCiAgICAgICBzdWJ0aXRsZSA9ICJFcnJvciBiYXJzIGFyZSBib290c3RyYXBwZWQgOTUlIENJcyIsCiAgICAgICB4ID0gIlNpdGUiLCAKICAgICAgIHkgPSAiTWVhbiByZXNwb25zZSAoMCA9IG5vLCAxID0geWVzKSIpCmBgYAoKYGBge3J9CnNwZXhfMTF0bzE1X3Bsb3RfY2ggPC0gZF9zcGV4X2Jhc2VfcTExdG8xNSAlPiUKICBmaWx0ZXIoZXBpX2N0cnkgPT0gIkNoaW5hIiwgZ3JlcGwoImNobiIsIHF1ZXN0aW9uKSkgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnksIHF1ZXN0aW9uLCBxdWVzdGlvbl90ZXh0LCBvcmRlcikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgicmVzcG9uc2UiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZ2dwbG90KGFlcyh4ID0gZXBpX2N0cnksIHkgPSBtZWFuKSkgKwogIGZhY2V0X3dyYXAofiByZW9yZGVyKHN0cl93cmFwKHF1ZXN0aW9uX3RleHQsIDQwKSwgb3JkZXIpLCBuY29sID0gNSkgKwogIGdlb21faml0dGVyKGRhdGEgPSBkX3NwZXhfYmFzZV9xMTF0bzE1ICU+JSAKICAgICAgICAgICAgICAgIGZpbHRlcihlcGlfY3RyeSA9PSAiQ2hpbmEiLCBncmVwbCgiY2huIiwgcXVlc3Rpb24pKSwgCiAgICAgICAgICAgICAgYWVzKHkgPSByZXNwb25zZSksIAogICAgICAgICAgICAgIGhlaWdodCA9IDAuMDUsIGFscGhhID0gMC4wOCwgY29sb3IgPSAiI2U3Mjk4YSIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gIkNISU5BIFNwaXJpdHVhbCBleHBlcmllbmNlcyAjMTEtMTU6IFJlc3BvbnNlcyB0byBpbmRpdmlkdWFsIGl0ZW1zIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIAogICAgICAgeSA9ICJNZWFuIHJlc3BvbnNlICgwID0gbm8sIDEgPSB5ZXMpIikKYGBgCgpgYGB7cn0Kc3BleF8xMXRvMTVfcGxvdF92dCA8LSBkX3NwZXhfYmFzZV9xMTF0bzE1ICU+JQogIGZpbHRlcihlcGlfY3RyeSA9PSAiVmFudWF0dSIsIGdyZXBsKCJ2dXQiLCBxdWVzdGlvbikpICU+JQogIGdyb3VwX2J5KGVwaV9jdHJ5LCBxdWVzdGlvbiwgcXVlc3Rpb25fdGV4dCwgb3JkZXIpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInJlc3BvbnNlIiwgbmEucm0gPSBUKSAlPiUKICB1bmdyb3VwKCkgJT4lIAogIGdncGxvdChhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbikpICsKICBmYWNldF93cmFwKH4gcmVvcmRlcihzdHJfd3JhcChxdWVzdGlvbl90ZXh0LCA0MCksIG9yZGVyKSwgbmNvbCA9IDUpICsKICBnZW9tX2ppdHRlcihkYXRhID0gZF9zcGV4X2Jhc2VfcTExdG8xNSAlPiUgCiAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlZhbnVhdHUiLCBncmVwbCgidnV0IiwgcXVlc3Rpb24pKSwgCiAgICAgICAgICAgICAgYWVzKHkgPSByZXNwb25zZSksIAogICAgICAgICAgICAgIGhlaWdodCA9IDAuMDUsIGFscGhhID0gMC4wOCwgY29sb3IgPSAiIzY2YTYxZSIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fcG9pbnRyYW5nZShhZXMoeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gIlZBTlVBVFUgU3Bpcml0dWFsIGV4cGVyaWVuY2VzICMxMS0xNTogUmVzcG9uc2VzIHRvIGluZGl2aWR1YWwgaXRlbXMiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgCiAgICAgICB5ID0gIk1lYW4gcmVzcG9uc2UgKDAgPSBubywgMSA9IHllcykiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA2LCBmaWcuYXNwID0gMS43fQpwbG90X2dyaWQoc3BleF8xMXRvMTVfcGxvdF91cywgc3BleF8xMXRvMTVfcGxvdF9naCwgc3BleF8xMXRvMTVfcGxvdF90aCwKICAgICAgICAgIHNwZXhfMTF0bzE1X3Bsb3RfY2gsIHNwZXhfMTF0bzE1X3Bsb3RfdnQsIG5jb2wgPSAxLAogICAgICAgICAgcmVsX2hlaWdodHMgPSBjKDEsIDEsIDIsIDEsIDEpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMiwgaW5jbHVkZSA9IFR9CmRfc3BleF9iYXNlX3ExMXRvMTUgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnksIHF1ZXN0aW9uLCBxdWVzdGlvbl90ZXh0LCBvcmRlcikgJT4lCiAgbXVsdGlfYm9vdF9zdGFuZGFyZCgicmVzcG9uc2UiLCBuYS5ybSA9IFQpICU+JQogIHVuZ3JvdXAoKSAlPiUgCiAgZmlsdGVyKCFpcy5uYShtZWFuKSwgbWVhbiAhPSAiTmFOIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcmVvcmRlcihzdHJfd3JhcChxdWVzdGlvbl90ZXh0LCA2MCksIGRlc2Mob3JkZXIpKSwgCiAgICAgICAgICAgICB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBmYWNldF9ncmlkKGVwaV9jdHJ5IH4gLiwgc2NhbGVzID0gImZyZWUiLCBzcGFjZSA9ICJmcmVlIikgKwogIGdlb21faml0dGVyKGRhdGEgPSBkX3NwZXhfYmFzZV9xMTF0bzE1ICU+JSBmaWx0ZXIoIWlzLm5hKHJlc3BvbnNlKSksCiAgICAgICAgICAgICAgYWVzKHkgPSByZXNwb25zZSksCiAgICAgICAgICAgICAgaGVpZ2h0ID0gMC4wNSwgYWxwaGEgPSAwLjA4LCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbl9kb2RnZSh3aWR0aCA9IDAuNSksCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSAiU3Bpcml0dWFsIGV4cGVyaWVuY2VzICMxMS0xNTpcblJlc3BvbnNlcyB0byBpbmRpdmlkdWFsIGl0ZW1zIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiUXVlc3Rpb24iLCAKICAgICAgIHkgPSAiTWVhbiByZXNwb25zZSwgaS5lLiwgcHJvcG9ydGlvbiByZXNwb25kaW5nICd5ZXMnICgwID0gbm8sIDEgPSB5ZXMpIikgKwogIGNvb3JkX2ZsaXAoKQpgYGAKCgo8UCBzdHlsZT0icGFnZS1icmVhay1iZWZvcmU6IGFsd2F5cyI+CiMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzOiBVbml2ZXJzYWwgcXVlc3Rpb25zLCBzZXQgMiAoUXVlc3Rpb25zICMxNi0yMSkKCiMjIE92ZXJhbGwgc2NvcmVzCgpgYGB7cn0KZF9zcGV4X2Jhc2VfcTE2dG8yMV9zY29yZWRfbWIgPC0gZF9zcGV4X2Jhc2VfcTE2dG8yMV9zY29yZWQgJT4lCiAgZ3JvdXBfYnkoZXBpX2N0cnkpICU+JQogIG11bHRpX2Jvb3Rfc3RhbmRhcmQoInNjb3JlIikgJT4lCiAgdW5ncm91cCgpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjYsIGluY2x1ZGUgPSBUfQpzcGV4X3ExNnRvMjFfcGxvdF9hIDwtIGdncGxvdChkX3NwZXhfYmFzZV9xMTZ0bzIxX3Njb3JlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFlcyh4ID0gZXBpX2N0cnksIHkgPSBzY29yZSwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwKjYsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDAuNSo2LCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAxKjYsIGx0eSA9IDIsIGNvbG9yID0gImJsYWNrIikgKwogIGdlb21faml0dGVyKGhlaWdodCA9IDAuMiwgd2lkdGggPSAwLjQsIGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IGRfc3BleF9iYXNlX3ExNnRvMjFfc2NvcmVkX21iLAogICAgICAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gMiwgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3RleHQoZGF0YSA9IGRhdGEuZnJhbWUoeCA9IDAuNSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMoMCo2LCAwLjUqNiwgMSo2KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiID0gYygifiBBbGwgYW5zd2VycyAnbm8nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJ+IEFsbCBhbnN3ZXJzICdtYXliZSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+IEFsbCBhbnN3ZXJzICd5ZXMnIikpLAogICAgICAgICAgICBhZXMoeCA9IHgsIHkgPSB5LCBsYWJlbCA9IGxhYiksCiAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIiwgaGp1c3QgPSAwLCBudWRnZV95ID0gMC4yNSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgNiwgMSkpICsKICBsYWJzKHRpdGxlID0gIlNwaXJpdHVhbCBleHBlcmllbmNlcyAoUXVlc3Rpb25zICMxNi0yMSkiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJTY29yZSAocmFuZ2U6IDAtNikiKQoKc3BleF9xMTZ0bzIxX3Bsb3RfYiA8LSBnZ3Bsb3QoZF9zcGV4X2Jhc2VfcTE2dG8yMV9zY29yZWRfbWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gNCwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCA2LCAxKSkgKwogIGxhYnModGl0bGUgPSAiU3Bpcml0dWFsIGV4cGVyaWVuY2VzICh6b29tZWQgaW4pIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiU2NvcmUgKHJhbmdlOiAwLTYpIikKCnBsb3RfZ3JpZChzcGV4X3ExNnRvMjFfcGxvdF9hLCBzcGV4X3ExNnRvMjFfcGxvdF9iLCBuY29sID0gMikKYGBgCgo8UCBzdHlsZT0icGFnZS1icmVhay1iZWZvcmU6IGFsd2F5cyI+CiMjIEJ5IGl0ZW0KCltub3QgeWV0IGRvbmVdCgoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIFNwaXJpdHVhbCBleHBlcmllbmNlczogVW5pdmVyc2FsIHF1ZXN0aW9ucywgc2V0IDMgKFF1ZXN0aW9ucyAjMjItMjMpCgojIyBPdmVyYWxsIHNjb3JlcwoKYGBge3J9CmRfc3BleF9iYXNlX3EyMnRvMjNfc2NvcmVkX21iIDwtIGRfc3BleF9iYXNlX3EyMnRvMjNfc2NvcmVkICU+JQogIGdyb3VwX2J5KGVwaV9jdHJ5KSAlPiUKICBtdWx0aV9ib290X3N0YW5kYXJkKCJzY29yZSIpICU+JQogIHVuZ3JvdXAoKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC42LCBpbmNsdWRlID0gVH0Kc3BleF9xMjJ0bzIzX3Bsb3RfYSA8LSBnZ3Bsb3QoZF9zcGV4X2Jhc2VfcTIydG8yM19zY29yZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gc2NvcmUsIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCoyLCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAwLjUqMiwgbHR5ID0gMiwgY29sb3IgPSAiYmxhY2siKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMSoyLCBsdHkgPSAyLCBjb2xvciA9ICJibGFjayIpICsKICBnZW9tX2ppdHRlcihoZWlnaHQgPSAwLjIsIHdpZHRoID0gMC40LCBhbHBoYSA9IDAuMiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSBkX3NwZXhfYmFzZV9xMjJ0bzIzX3Njb3JlZF9tYiwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksCiAgICAgICAgICAgICAgICAgIGZhdHRlbiA9IDIsIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBkYXRhLmZyYW1lKHggPSAwLjUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjKDAqMiwgMC41KjIsIDEqMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYiA9IGMoIn4gQWxsIGFuc3dlcnMgJ25vJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAifiBBbGwgYW5zd2VycyAnbWF5YmUnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifiBBbGwgYW5zd2VycyAneWVzJyIpKSwKICAgICAgICAgICAgYWVzKHggPSB4LCB5ID0geSwgbGFiZWwgPSBsYWIpLAogICAgICAgICAgICBjb2xvciA9ICJibGFjayIsIGhqdXN0ID0gMCwgbnVkZ2VfeSA9IDAuMSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMiwgMSkpICsKICBsYWJzKHRpdGxlID0gIlNwaXJpdHVhbCBleHBlcmllbmNlcyAoUXVlc3Rpb25zICMyMi0yMykiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgYm9vdHN0cmFwcGVkIDk1JSBDSXMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJTY29yZSAocmFuZ2U6IDAtMikiKQoKc3BleF9xMjJ0bzIzX3Bsb3RfYiA8LSBnZ3Bsb3QoZF9zcGV4X2Jhc2VfcTIydG8yM19zY29yZWRfbWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZXMoeCA9IGVwaV9jdHJ5LCB5ID0gbWVhbiwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBnZW9tX3BvaW50cmFuZ2UoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwKICAgICAgICAgICAgICAgICAgZmF0dGVuID0gNCwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAyLCAxKSkgKwogIGxhYnModGl0bGUgPSAiU3Bpcml0dWFsIGV4cGVyaWVuY2VzICh6b29tZWQgaW4pIiwKICAgICAgIHN1YnRpdGxlID0gIkVycm9yIGJhcnMgYXJlIGJvb3RzdHJhcHBlZCA5NSUgQ0lzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiU2NvcmUgKHJhbmdlOiAwLTIpIikKCnBsb3RfZ3JpZChzcGV4X3EyMnRvMjNfcGxvdF9hLCBzcGV4X3EyMnRvMjNfcGxvdF9iLCBuY29sID0gMikKYGBgCgo8UCBzdHlsZT0icGFnZS1icmVhay1iZWZvcmU6IGFsd2F5cyI+CiMjIEJ5IGl0ZW0KCltub3QgeWV0IGRvbmVdCgoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIFJlbGF0aW9uc2hpcHMgYmV0d2VlbiBwb3Jvc2l0eSBhbmQgc3Bpcml0dWFsIGV4cGVyaWVuY2UKCiMjIENvbnNpZGVyaW5nIGFsbCAiYmVpbmdzIiAobW9yZSBmb3IgVGhhaWxhbmQpCgpgYGB7cn0KZF9wb3Jfc3BleF9iYXNlX3EydG8yM19wcm9wYWxsIDwtIGRfc3BleF9iYXNlX3EydG8yM19zY29yZWRfcHJvcGFsbCAlPiUgCiAgcmVuYW1lKHNwZXhfc2NvcmVfcHJvcGFsbCA9IHNjb3JlKSAlPiUKICBmdWxsX2pvaW4oZF9wb3Jfc2NvcmVkICU+JSByZW5hbWUocG9yX3Njb3JlID0gc2NvcmUpKSAlPiUKICBncm91cF9ieShlcGlfY3RyeSkgJT4lCiAgbXV0YXRlKHBvcl9zY29yZV9zdGQgPSBzY2FsZShwb3Jfc2NvcmUpLAogICAgICAgICBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkID0gc2NhbGUoc3BleF9zY29yZV9wcm9wYWxsKSkgJT4lCiAgdW5ncm91cCgpCgojIGVmZmVjdC1jb2RlIGJ5IGRlZmF1bHQKY29udHJhc3RzKGRfcG9yX3NwZXhfYmFzZV9xMnRvMjNfcHJvcGFsbCRlcGlfY3RyeSkgPC0gY29udHIuc3VtKDUpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjM1LCBpbmNsdWRlID0gRn0KZ2dwbG90KGRfcG9yX3NwZXhfYmFzZV9xMnRvMjNfcHJvcGFsbCwKICAgICAgIGFlcyh4ID0gcG9yX3Njb3JlLCB5ID0gc3BleF9zY29yZV9wcm9wYWxsLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGZhY2V0X2dyaWQofiBlcGlfY3RyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjIsIHNob3cubGVnZW5kID0gRikgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIGNvbG9yID0gImJsYWNrIiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxNiwgNCkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBwb3Jvc2l0eSBhbmQgc3Bpcml0dWFsIGV4cGVyaWVuY2UiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgYWxsIGJlaW5ncyBmb3IgVGhhaWxhbmQiLAogICAgICAgeCA9ICJQb3Jvc2l0eSBzY29yZSAoMC0xNikiLAogICAgICAgeSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZVxucHJvcG9ydGlvbiBzY29yZSAoMC0xKSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjMsIGluY2x1ZGUgPSBUfQpnZ3Bsb3QoZF9wb3Jfc3BleF9iYXNlX3EydG8yM19wcm9wYWxsLAogICAgICAgYWVzKHggPSBwb3Jfc2NvcmVfc3RkLCB5ID0gc3BleF9zY29yZV9wcm9wYWxsX3N0ZCwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBmYWNldF93cmFwKH4gZXBpX2N0cnksIG5jb2wgPSA1LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogICMgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxNiwgNCkpICsKICAjIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDQpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgICBsYWJzKHRpdGxlID0gIlJlbGF0aW9uc2hpcCBiZXR3ZWVuIHBvcm9zaXR5IGFuZCBzcGlyaXR1YWwgZXhwZXJpZW5jZSIsCiAgICAgICBzdWJ0aXRsZSA9ICJJbmNsdWRlcyBhbGwgYmVpbmdzIGZvciBUaGFpbGFuZCIsCiAgICAgICB4ID0gIlBvcm9zaXR5IHNjb3JlIChzdGFuZGFyZGl6ZWQgd2l0aGluIGVhY2ggc2l0ZSkiLAogICAgICAgeSA9ICJTcGlyaXR1YWwgZXhwLiBwcm9wb3J0aW9uIHNjb3JlXG4oc3RhbmRhcmRpemVkIHdpdGhpbiBlYWNoIHNpdGUpIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuMzUsIGluY2x1ZGUgPSBGfQpnZ3Bsb3QoZF9wb3Jfc3BleF9iYXNlX3EydG8yM19wcm9wYWxsICU+JQogICAgICAgICBmaWx0ZXIoYWJzKHBvcl9zY29yZV9zdGQpIDwgMiwKICAgICAgICAgICAgICAgIGFicyhzcGV4X3Njb3JlX3Byb3BhbGxfc3RkKSA8IDIpLAogICAgICAgYWVzKHggPSBwb3Jfc2NvcmVfc3RkLCB5ID0gc3BleF9zY29yZV9wcm9wYWxsX3N0ZCwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBmYWNldF93cmFwKH4gZXBpX2N0cnksIG5jb2wgPSA1KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICAjIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMTYsIDQpKSArCiAgIyBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDIyLCA0KSkgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIGxhYnModGl0bGUgPSAiUmVsYXRpb25zaGlwIGJldHdlZW4gcG9yb3NpdHkgYW5kIHNwaXJpdHVhbCBleHBlcmllbmNlIiwKICAgICAgIHN1YnRpdGxlID0gIkluY2x1ZGVzIGFsbCBiZWluZ3MgZm9yIFRoYWlsYW5kXG5FeGNsdWRpbmcgb3V0bGllcnMgKHogPiAyIG9yIHogPCAtMikiLAogICAgICAgeCA9ICJQb3Jvc2l0eSBzY29yZSAoc3RhbmRhcmRpemVkIHdpdGhpbiBlYWNoIHNpdGUpIiwKICAgICAgIHkgPSAiU3Bpcml0dWFsIGV4cC4gcHJvcG9ydGlvbiBzY29yZVxuKHN0YW5kYXJkaXplZCB3aXRoaW4gZWFjaCBzaXRlKSIpCmBgYAoKYGBge3J9CnJfcG9yX3NwZXhfcHJvcGFsbCA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9wcm9wYWxsX3N0ZCAqIGVwaV9jdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYXN0cyA9IGxpc3QoZXBpX2N0cnkgPSBjb250cmFzdHNfY3RyeV9jdHIpKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0Kc3VtbWFyeShyX3Bvcl9zcGV4X3Byb3BhbGwpJGNvZWZmaWNpZW50cyAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtcGFyYW1ldGVyLCAtcCksIGZ1bnMocm91bmQoLiwgMikpKSAlPiUKICBtdXRhdGUocCA9IGlmZWxzZShwIDwgMC4wMDEsICI8MC4wMDEiLCByb3VuZChwLCAzKSksCiAgICAgICAgIHNpZ25pZmljYW50ID0gaWZlbHNlKHAgPCAwLjA1LCAiKiIsICIiKSkgJT4lCiAga2FibGUoYWxpZ24gPSBjKCJsIiwgcmVwKCJyIiwgNSksICJsIikpICU+JQogIGthYmxlX3N0eWxpbmcoKSAlPiUKICByb3dfc3BlYyhjKDIsIDc6MTApLCBib2xkID0gVCkKYGBgCgpgYGB7cn0Kcl9wb3Jfc3BleF9wcm9wYWxsX3VzIDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJVUyIpKQoKcl9wb3Jfc3BleF9wcm9wYWxsX2doIDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJHaGFuYSIpKQoKcl9wb3Jfc3BleF9wcm9wYWxsX3RoIDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJUaGFpbGFuZCIpKQoKcl9wb3Jfc3BleF9wcm9wYWxsX2NoIDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJDaGluYSIpKQoKcl9wb3Jfc3BleF9wcm9wYWxsX3Z0IDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX3Byb3BhbGxfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwgJT4lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKGVwaV9jdHJ5ID09ICJWYW51YXR1IikpCmBgYAoKYGBge3IsIGluY2x1ZGUgPSBUfQpyYmluZChzdW1tYXJ5KHJfcG9yX3NwZXhfcHJvcGFsbF91cykkY29lZmZpY2llbnRzICU+JQogICAgICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgICAgICByb3duYW1lc190b19jb2x1bW4oInBhcmFtZXRlciIpICU+JQogICAgICAgIG11dGF0ZShzaXRlID0gIlVTIiksCiAgICAgIHN1bW1hcnkocl9wb3Jfc3BleF9wcm9wYWxsX2doKSRjb2VmZmljaWVudHMgJT4lCiAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgICAgICAgbXV0YXRlKHNpdGUgPSAiR2hhbmEiKSwKICAgICAgc3VtbWFyeShyX3Bvcl9zcGV4X3Byb3BhbGxfdGgpJGNvZWZmaWNpZW50cyAlPiUKICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICAgICAgICBtdXRhdGUoc2l0ZSA9ICJUaGFpbGFuZCIpLAogICAgICBzdW1tYXJ5KHJfcG9yX3NwZXhfcHJvcGFsbF9jaCkkY29lZmZpY2llbnRzICU+JQogICAgICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgICAgICByb3duYW1lc190b19jb2x1bW4oInBhcmFtZXRlciIpICU+JQogICAgICAgIG11dGF0ZShzaXRlID0gIkNoaW5hIiksCiAgICAgIHN1bW1hcnkocl9wb3Jfc3BleF9wcm9wYWxsX3Z0KSRjb2VmZmljaWVudHMgJT4lCiAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgICAgICAgbXV0YXRlKHNpdGUgPSAiVmFudWF0dSIpKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtYyhwYXJhbWV0ZXIsIHAsIHNpdGUpKSwgZnVucyhyb3VuZCguLCAyKSkpICU+JQogIG11dGF0ZShwID0gaWZlbHNlKHAgPCAwLjAwMSwgIjwwLjAwMSIsIHJvdW5kKHAsIDMpKSwKICAgICAgICAgc2lnbmlmaWNhbnQgPSBpZmVsc2UocCA8IDAuMDUsICIqIiwgIiIpKSAlPiUKICBzZWxlY3QoLXNpdGUpICU+JQogIGthYmxlKGFsaWduID0gYygibCIsIHJlcCgiciIsIDUpLCAibCIpKSAlPiUKICBrYWJsZV9zdHlsaW5nKCkgJT4lCiAgZ3JvdXBfcm93cygiVVMiLCAxLCAyKSAlPiUKICBncm91cF9yb3dzKCJHaGFuYSIsIDMsIDQpICU+JQogIGdyb3VwX3Jvd3MoIlRoYWlsYW5kIiwgNSwgNikgJT4lCiAgZ3JvdXBfcm93cygiQ2hpbmEiLCA3LCA4KSAlPiUKICBncm91cF9yb3dzKCJWYW51YXR1IiwgOSwgMTApICU+JQogIHJvd19zcGVjKGMoc2VxKDIsIDEwLCAyKSksIGJvbGQgPSBUKQpgYGAKCjxQIHN0eWxlPSJwYWdlLWJyZWFrLWJlZm9yZTogYWx3YXlzIj4KIyMgQ29uc2lkZXJpbmcgZmlyc3QgZml2ZSAiYmVpbmdzIiBvbmx5CgpgYGB7cn0KZF9wb3Jfc3BleF9iYXNlX3EydG8yM19maXJzdDUgPC0gZF9zcGV4X2Jhc2VfcTJ0bzIzX3Njb3JlZF9maXJzdDUgJT4lIAogIHJlbmFtZShzcGV4X3Njb3JlX2ZpcnN0NSA9IHNjb3JlKSAlPiUKICBmdWxsX2pvaW4oZF9wb3Jfc2NvcmVkICU+JSByZW5hbWUocG9yX3Njb3JlID0gc2NvcmUpKSAlPiUKICBncm91cF9ieShlcGlfY3RyeSkgJT4lCiAgbXV0YXRlKHBvcl9zY29yZV9zdGQgPSBzY2FsZShwb3Jfc2NvcmUpLAogICAgICAgICBzcGV4X3Njb3JlX2ZpcnN0NV9zdGQgPSBzY2FsZShzcGV4X3Njb3JlX2ZpcnN0NSkpICU+JQogIHVuZ3JvdXAoKQoKIyBlZmZlY3QtY29kZSBieSBkZWZhdWx0CmNvbnRyYXN0cyhkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX3Byb3BhbGwkZXBpX2N0cnkpIDwtIGNvbnRyLnN1bSg1KQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC4zNSwgaW5jbHVkZSA9IEZ9CmdncGxvdChkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSwKICAgICAgIGFlcyh4ID0gcG9yX3Njb3JlLCB5ID0gc3BleF9zY29yZV9maXJzdDUsIGNvbG9yID0gZXBpX2N0cnkpKSArCiAgZmFjZXRfZ3JpZCh+IGVwaV9jdHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMiwgc2hvdy5sZWdlbmQgPSBGKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIiwgY29sb3IgPSAiYmxhY2siLCBzaG93LmxlZ2VuZCA9IEYpICsKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDE2LCA0KSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDQpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBwb3Jvc2l0eSBhbmQgc3Bpcml0dWFsIGV4cGVyaWVuY2UiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgZmlyc3QgZml2ZSBiZWluZ3MgZm9yIGFsbCBzaXRlcyIsCiAgICAgICB4ID0gIlBvcm9zaXR5IHNjb3JlICgwLTE2KSIsCiAgICAgICB5ID0gIlNwaXJpdHVhbCBleHBlcmllbmNlXG5zdW0gc2NvcmUgKDAtMjIpIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuMywgaW5jbHVkZSA9IFR9CmdncGxvdChkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSwKICAgICAgIGFlcyh4ID0gcG9yX3Njb3JlX3N0ZCwgeSA9IHNwZXhfc2NvcmVfZmlyc3Q1X3N0ZCwgY29sb3IgPSBlcGlfY3RyeSkpICsKICBmYWNldF93cmFwKH4gZXBpX2N0cnksIG5jb2wgPSA1LCBzY2FsZXMgPSAiZnJlZSIpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogICMgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxNiwgNCkpICsKICAjIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDQpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBwb3Jvc2l0eSBhbmQgc3Bpcml0dWFsIGV4cGVyaWVuY2UiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgZmlyc3QgZml2ZSBiZWluZ3MgZm9yIGFsbCBzaXRlcyIsCiAgICAgICB4ID0gIlBvcm9zaXR5IHNjb3JlIChzdGFuZGFyZGl6ZWQgd2l0aGluIGVhY2ggc2l0ZSkiLAogICAgICAgeSA9ICJTcGlyaXR1YWwgZXhwZXJpZW5jZSBzdW0gc2NvcmVcbihzdGFuZGFyZGl6ZWQgd2l0aGluIGVhY2ggc2l0ZSkiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC4zNSwgaW5jbHVkZSA9IEZ9CmdncGxvdChkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgZmlsdGVyKGFicyhwb3Jfc2NvcmVfc3RkKSA8IDIsCiAgICAgICAgICAgICAgICBhYnMoc3BleF9zY29yZV9maXJzdDVfc3RkKSA8IDIpLAogICAgICAgYWVzKHggPSBwb3Jfc2NvcmVfc3RkLCB5ID0gc3BleF9zY29yZV9maXJzdDVfc3RkLCBjb2xvciA9IGVwaV9jdHJ5KSkgKwogIGZhY2V0X3dyYXAofiBlcGlfY3RyeSwgbmNvbCA9IDUpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4yLCBzaG93LmxlZ2VuZCA9IEYpICsKICBnZW9tX3Ntb290aChtZXRob2QgPSAibG0iLCBjb2xvciA9ICJibGFjayIsIHNob3cubGVnZW5kID0gRikgKwogICMgc2NhbGVfeF9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxNiwgNCkpICsKICAjIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMjIsIDQpKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgbGFicyh0aXRsZSA9ICJSZWxhdGlvbnNoaXAgYmV0d2VlbiBwb3Jvc2l0eSBhbmQgc3Bpcml0dWFsIGV4cGVyaWVuY2UiLAogICAgICAgc3VidGl0bGUgPSAiSW5jbHVkZXMgZmlyc3QgZml2ZSBiZWluZ3MgZm9yIGFsbCBzaXRlc1xuRXhjbHVkaW5nIG91dGxpZXJzICh6ID4gMiBvciB6IDwgLTIpIiwKICAgICAgIHggPSAiUG9yb3NpdHkgc2NvcmUgKHN0YW5kYXJkaXplZCB3aXRoaW4gZWFjaCBzaXRlKSIsCiAgICAgICB5ID0gIlNwaXJpdHVhbCBleHBlcmllbmNlIHN1bSBzY29yZVxuKHN0YW5kYXJkaXplZCB3aXRoaW4gZWFjaCBzaXRlKSIpCmBgYAoKYGBge3J9CnJfcG9yX3NwZXhfZmlyc3Q1IDwtIGxtKHBvcl9zY29yZV9zdGQgfiBzcGV4X3Njb3JlX2ZpcnN0NV9zdGQgKiBlcGlfY3RyeSwKICAgICAgICAgICAgICAgICAgICAgICAgZF9wb3Jfc3BleF9iYXNlX3EydG8yM19maXJzdDUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYXN0cyA9IGxpc3QoZXBpX2N0cnkgPSBjb250cmFzdHNfY3RyeV9jdHIpKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0Kc3VtbWFyeShyX3Bvcl9zcGV4X2ZpcnN0NSkkY29lZmZpY2llbnRzICU+JQogIGRhdGEuZnJhbWUoKSAlPiUKICByb3duYW1lc190b19jb2x1bW4oInBhcmFtZXRlciIpICU+JQogIHJlbmFtZShiID0gRXN0aW1hdGUsIGBzdGFuZGFyZCBlcnJvcmAgPSBTdGQuLkVycm9yLCBgdGAgPSB0LnZhbHVlLAogICAgICAgICBwID0gUHIuLi50Li4pICU+JQogIG11dGF0ZV9hdCh2YXJzKC1wYXJhbWV0ZXIsIC1wKSwgZnVucyhyb3VuZCguLCAyKSkpICU+JQogIG11dGF0ZShwID0gaWZlbHNlKHAgPCAwLjAwMSwgIjwwLjAwMSIsIHJvdW5kKHAsIDMpKSwKICAgICAgICAgc2lnbmlmaWNhbnQgPSBpZmVsc2UocCA8IDAuMDUsICIqIiwgIiIpKSAlPiUKICBrYWJsZShhbGlnbiA9IGMoImwiLCByZXAoInIiLCA1KSwgImwiKSkgJT4lCiAga2FibGVfc3R5bGluZygpICU+JQogIHJvd19zcGVjKGMoMiwgNzoxMCksIGJvbGQgPSBUKQpgYGAKCmBgYHtyfQpyX3Bvcl9zcGV4X2ZpcnN0NV91cyA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9maXJzdDVfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlVTIikpCgpyX3Bvcl9zcGV4X2ZpcnN0NV9naCA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9maXJzdDVfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIkdoYW5hIikpCgpyX3Bvcl9zcGV4X2ZpcnN0NV90aCA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9maXJzdDVfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlRoYWlsYW5kIikpCgpyX3Bvcl9zcGV4X2ZpcnN0NV9jaCA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9maXJzdDVfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIkNoaW5hIikpCgpyX3Bvcl9zcGV4X2ZpcnN0NV92dCA8LSBsbShwb3Jfc2NvcmVfc3RkIH4gc3BleF9zY29yZV9maXJzdDVfc3RkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkX3Bvcl9zcGV4X2Jhc2VfcTJ0bzIzX2ZpcnN0NSAlPiUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoZXBpX2N0cnkgPT0gIlZhbnVhdHUiKSkKYGBgCgpgYGB7ciwgaW5jbHVkZSA9IFR9CnJiaW5kKHN1bW1hcnkocl9wb3Jfc3BleF9maXJzdDVfdXMpJGNvZWZmaWNpZW50cyAlPiUKICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICAgICAgICBtdXRhdGUoc2l0ZSA9ICJVUyIpLAogICAgICBzdW1tYXJ5KHJfcG9yX3NwZXhfZmlyc3Q1X2doKSRjb2VmZmljaWVudHMgJT4lCiAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgICAgICAgbXV0YXRlKHNpdGUgPSAiR2hhbmEiKSwKICAgICAgc3VtbWFyeShyX3Bvcl9zcGV4X2ZpcnN0NV90aCkkY29lZmZpY2llbnRzICU+JQogICAgICAgIGRhdGEuZnJhbWUoKSAlPiUKICAgICAgICByb3duYW1lc190b19jb2x1bW4oInBhcmFtZXRlciIpICU+JQogICAgICAgIG11dGF0ZShzaXRlID0gIlRoYWlsYW5kIiksCiAgICAgIHN1bW1hcnkocl9wb3Jfc3BleF9maXJzdDVfY2gpJGNvZWZmaWNpZW50cyAlPiUKICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgcm93bmFtZXNfdG9fY29sdW1uKCJwYXJhbWV0ZXIiKSAlPiUKICAgICAgICBtdXRhdGUoc2l0ZSA9ICJDaGluYSIpLAogICAgICBzdW1tYXJ5KHJfcG9yX3NwZXhfZmlyc3Q1X3Z0KSRjb2VmZmljaWVudHMgJT4lCiAgICAgICAgZGF0YS5mcmFtZSgpICU+JQogICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbigicGFyYW1ldGVyIikgJT4lCiAgICAgICAgbXV0YXRlKHNpdGUgPSAiVmFudWF0dSIpKSAlPiUKICByZW5hbWUoYiA9IEVzdGltYXRlLCBgc3RhbmRhcmQgZXJyb3JgID0gU3RkLi5FcnJvciwgYHRgID0gdC52YWx1ZSwKICAgICAgICAgcCA9IFByLi4udC4uKSAlPiUKICBtdXRhdGVfYXQodmFycygtYyhwYXJhbWV0ZXIsIHAsIHNpdGUpKSwgZnVucyhyb3VuZCguLCAyKSkpICU+JQogIG11dGF0ZShwID0gaWZlbHNlKHAgPCAwLjAwMSwgIjwwLjAwMSIsIHJvdW5kKHAsIDMpKSwKICAgICAgICAgc2lnbmlmaWNhbnQgPSBpZmVsc2UocCA8IDAuMDUsICIqIiwgIiIpKSAlPiUKICBzZWxlY3QoLXNpdGUpICU+JQogIGthYmxlKGFsaWduID0gYygibCIsIHJlcCgiciIsIDUpLCAibCIpKSAlPiUKICBrYWJsZV9zdHlsaW5nKCkgJT4lCiAgZ3JvdXBfcm93cygiVVMiLCAxLCAyKSAlPiUKICBncm91cF9yb3dzKCJHaGFuYSIsIDMsIDQpICU+JQogIGdyb3VwX3Jvd3MoIlRoYWlsYW5kIiwgNSwgNikgJT4lCiAgZ3JvdXBfcm93cygiQ2hpbmEiLCA3LCA4KSAlPiUKICBncm91cF9yb3dzKCJWYW51YXR1IiwgOSwgMTApICU+JQogIHJvd19zcGVjKGMoc2VxKDIsIDEwLCAyKSksIGJvbGQgPSBUKQpgYGAK